package simple_factory

import "fmt"

// 简单工厂模式
// 以打印机为例

type Printer interface {
	Print()
}

// 中文打印机
type CnPrinter struct {
}

func (r *CnPrinter) Print() {
	fmt.Printf("CnPrinter execute......\n")
}

// 英文打印机
type EnPrinter struct {
}

func (r *EnPrinter) Print() {
	fmt.Printf("EnPrinter execute......\n")
}

// NewPrinter
//
//	@Description: 打印机工厂方法
//	@param lang
//	@return Printer
func NewPrinter(lang string) Printer {
	switch lang {
	case "cn":
		return &CnPrinter{}
	case "en":
		return &EnPrinter{}
	default:
		return &CnPrinter{} // 默认返回中文打印机
	}
}
